Skip to content

UX changes for notch presentation and DynamicNotchKit pin update#265

Open
altic-dev wants to merge 9 commits intomainfrom
B/1.5.13-optimized-notch-design
Open

UX changes for notch presentation and DynamicNotchKit pin update#265
altic-dev wants to merge 9 commits intomainfrom
B/1.5.13-optimized-notch-design

Conversation

@altic-dev
Copy link
Copy Markdown
Owner

Description

UX changes for the notch presentation, plus a DynamicNotchKit pin update to pull in the faster notch opening animation.

Type of Change

  • 🐞 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📝 Documentation update

Related Issues

  • Closes #(issue number if applicable)

Testing

  • Tested on Intel Mac
  • Tested on Apple Silicon Mac
  • Tested on macOS 15
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml Sources
  • Ran formatter locally: swiftformat --config .swiftformat Sources
  • Built locally: sh build_incremental.sh

Notes

  • UX changes only.
  • Updates DynamicNotchKit to the latest fork commit for faster notch opening.

Screenshots / Video

Add screenshots or Video recording of the app after you have made your changes

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b3cca70d00

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +591 to +592
let resolvedScreen = screen ?? self.preferredPresentationScreen()
self.currentScreenSupportsCompactPresentation = self.supportsCompactPresentation(on: resolvedScreen)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Derive policy from active overlay screen

refreshNotchPresentationPolicy falls back to preferredPresentationScreen() (mouse location) when no screen is provided, and capability getters (for example canShowExpandedCommandOutput) call it on each access. On multi-display setups this causes the policy to flip as the cursor moves between displays with and without compact-notch support, so compact-mode command expansion/actions can be enabled or disabled mid-session even though the overlay is already attached to a specific screen. Bind policy evaluation to the screen used when the notch was shown instead of recomputing from pointer location.

Useful? React with 👍 / 👎.

Comment on lines +561 to +562
private var enableNotchFeatures: Bool {
SettingsStore.shared.overlayPosition == .top || self.supportsCommandNotchUI
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Decouple bottom command sync from notch style

shouldSyncCommandConversationToNotch is gated by enableNotchFeatures, which returns false when overlayPosition is .bottom and compact mode disables command UI. This means a user can select Compact in top mode, switch to bottom overlay, and then lose command conversation syncing/expanded command output entirely because a hidden top-notch style flag is still applied. Bottom overlay command behavior should not depend on the top-notch presentation mode.

Useful? React with 👍 / 👎.

@altic-dev
Copy link
Copy Markdown
Owner Author

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cdb0906cf6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

private var processingStatusText: String {
let t = self.contentState.transcriptionText.trimmingCharacters(in: .whitespacesAndNewlines)
return t.isEmpty ? self.processingLabel : t
guard Self.transientOverlayStatusTexts.contains(t) else { return self.processingLabel }
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Accept current processing tokens in status matcher

This new strict guard only returns transcriptionText when it exactly matches transientOverlayStatusTexts, but ContentView now writes "Transcribing"/"Refining" (without ellipses). In bottom-overlay dictation flows, "Transcribing" is rejected here and the UI falls back to "Refining...", so users see the wrong processing phase text during final transcription. Include the non-ellipsis variants (or avoid exact-match filtering) so phase labels remain accurate.

Useful? React with 👍 / 👎.

Comment on lines +285 to +287
guard self.shouldSyncCommandNotchState else {
NotchContentState.shared.clearCommandOutput()
return
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve command history when notch sync is temporarily disabled

When sync is disabled by presentation policy, this branch clears all notch command output state. If the user later re-enables standard notch mode, there is no automatic settings-change resync path, so expanded command output remains empty (and cannot open from existing history) until a new message or chat reload occurs. This makes mode toggling appear to lose the current conversation in notch UI.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant